/*
 * Copyright (C) 2018 guomw.Inc. All rights reserved.
 * 项目名称： report-manage
 * 文件名称： StaticResourceService.java
 * Date：18-11-5 上午10:54
 * Author: guomw
 */

package com.guomw.report.service.service.upload;

import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;

/**
 * @author guomw
 * @date 2018/9/26
 */
public interface StaticResourceService {
    /**
     * 图片
     */
    String IMG = "image/{0}/{1}";
    /**
     * 报告
     */
    String REPORT ="report";
    String REPORT_TEMP ="report_temp";

    /**
     * 支持的图片格式
     */
    String[] ALLOW_IMG = new String[]{"jpg", "png", "jpeg", "bmp"};

    /**
     * 校验类型
     * @param fileName
     * @return
     */
    boolean typeIsAllow(String fileName);

    /**
     *  获取文件后缀
     * @param fileName
     * @return
     */
    String getSuffix(String fileName);

    /**
     * 上传资源
     *
     * @param path 资源路径
     * @param data 数据
     * @return 新资源的资源定位符
     * @throws IOException           保存是出错
     * @throws IllegalStateException 如果该资源已存在
     */
    URI uploadResource(String path, InputStream data) throws IOException, IllegalStateException, URISyntaxException;

    /**
     * 获取指定资源的资源定位符
     *
     * @param path
     * @return
     * @throws URISyntaxException
     */
    URI getResource(String path) throws URISyntaxException;



    /**
     * 获取指定资源的资源定位符-物理路径
     *
     * @param path
     * @return
     * @throws URISyntaxException
     */
    URI getResourceByLocalPath(String path) throws URISyntaxException;

    /**
     * 删除资源
     *
     * @param path
     * @throws IOException
     */
    void deleteResource(String path) throws IOException;

    /**
     * 删除资源
     *
     * @param uri
     * @throws IOException
     */
    void deleteResource(URI uri) throws IOException;
}
